(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
p(p(b(a(x0)), x1), p(x2, x3)) → p(p(x3, a(x2)), p(b(a(x1)), b(x0)))
Rewrite Strategy: INNERMOST
(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)
Converted CpxTRS to CDT
(2) Obligation:
Complexity Dependency Tuples Problem
Rules:
p(p(b(a(z0)), z1), p(z2, z3)) → p(p(z3, a(z2)), p(b(a(z1)), b(z0)))
Tuples:
P(p(b(a(z0)), z1), p(z2, z3)) → c(P(p(z3, a(z2)), p(b(a(z1)), b(z0))), P(z3, a(z2)), P(b(a(z1)), b(z0)))
S tuples:
P(p(b(a(z0)), z1), p(z2, z3)) → c(P(p(z3, a(z2)), p(b(a(z1)), b(z0))), P(z3, a(z2)), P(b(a(z1)), b(z0)))
K tuples:none
Defined Rule Symbols:
p
Defined Pair Symbols:
P
Compound Symbols:
c
(3) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
P(
p(
b(
a(
z0)),
z1),
p(
z2,
z3)) →
c(
P(
p(
z3,
a(
z2)),
p(
b(
a(
z1)),
b(
z0))),
P(
z3,
a(
z2)),
P(
b(
a(
z1)),
b(
z0))) by
P(p(b(a(x0)), x1), p(x2, x3)) → c(P(p(x3, a(x2)), p(b(a(x1)), b(x0))))
(4) Obligation:
Complexity Dependency Tuples Problem
Rules:
p(p(b(a(z0)), z1), p(z2, z3)) → p(p(z3, a(z2)), p(b(a(z1)), b(z0)))
Tuples:
P(p(b(a(x0)), x1), p(x2, x3)) → c(P(p(x3, a(x2)), p(b(a(x1)), b(x0))))
S tuples:
P(p(b(a(x0)), x1), p(x2, x3)) → c(P(p(x3, a(x2)), p(b(a(x1)), b(x0))))
K tuples:none
Defined Rule Symbols:
p
Defined Pair Symbols:
P
Compound Symbols:
c
(5) CdtInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use instantiation to replace
P(
p(
b(
a(
x0)),
x1),
p(
x2,
x3)) →
c(
P(
p(
x3,
a(
x2)),
p(
b(
a(
x1)),
b(
x0)))) by
P(p(b(a(z0)), a(x2)), p(b(a(x1)), b(x0))) → c(P(p(b(x0), a(b(a(x1)))), p(b(a(a(x2))), b(z0))))
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
p(p(b(a(z0)), z1), p(z2, z3)) → p(p(z3, a(z2)), p(b(a(z1)), b(z0)))
Tuples:
P(p(b(a(z0)), a(x2)), p(b(a(x1)), b(x0))) → c(P(p(b(x0), a(b(a(x1)))), p(b(a(a(x2))), b(z0))))
S tuples:
P(p(b(a(z0)), a(x2)), p(b(a(x1)), b(x0))) → c(P(p(b(x0), a(b(a(x1)))), p(b(a(a(x2))), b(z0))))
K tuples:none
Defined Rule Symbols:
p
Defined Pair Symbols:
P
Compound Symbols:
c
(7) CdtInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use instantiation to replace
P(
p(
b(
a(
z0)),
a(
x2)),
p(
b(
a(
x1)),
b(
x0))) →
c(
P(
p(
b(
x0),
a(
b(
a(
x1)))),
p(
b(
a(
a(
x2))),
b(
z0)))) by
P(p(b(a(z0)), a(b(a(x2)))), p(b(a(a(x1))), b(x0))) → c(P(p(b(x0), a(b(a(a(x1))))), p(b(a(a(b(a(x2))))), b(z0))))
(8) Obligation:
Complexity Dependency Tuples Problem
Rules:
p(p(b(a(z0)), z1), p(z2, z3)) → p(p(z3, a(z2)), p(b(a(z1)), b(z0)))
Tuples:
P(p(b(a(z0)), a(b(a(x2)))), p(b(a(a(x1))), b(x0))) → c(P(p(b(x0), a(b(a(a(x1))))), p(b(a(a(b(a(x2))))), b(z0))))
S tuples:
P(p(b(a(z0)), a(b(a(x2)))), p(b(a(a(x1))), b(x0))) → c(P(p(b(x0), a(b(a(a(x1))))), p(b(a(a(b(a(x2))))), b(z0))))
K tuples:none
Defined Rule Symbols:
p
Defined Pair Symbols:
P
Compound Symbols:
c
(9) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
P(
p(
b(
a(
z0)),
a(
b(
a(
x2)))),
p(
b(
a(
a(
x1))),
b(
x0))) →
c(
P(
p(
b(
x0),
a(
b(
a(
a(
x1))))),
p(
b(
a(
a(
b(
a(
x2))))),
b(
z0)))) by
P(p(b(a(z0)), a(b(a(z1)))), p(b(a(a(z2))), b(a(y0)))) → c(P(p(b(a(y0)), a(b(a(a(z2))))), p(b(a(a(b(a(z1))))), b(z0))))
(10) Obligation:
Complexity Dependency Tuples Problem
Rules:
p(p(b(a(z0)), z1), p(z2, z3)) → p(p(z3, a(z2)), p(b(a(z1)), b(z0)))
Tuples:
P(p(b(a(z0)), a(b(a(z1)))), p(b(a(a(z2))), b(a(y0)))) → c(P(p(b(a(y0)), a(b(a(a(z2))))), p(b(a(a(b(a(z1))))), b(z0))))
S tuples:
P(p(b(a(z0)), a(b(a(z1)))), p(b(a(a(z2))), b(a(y0)))) → c(P(p(b(a(y0)), a(b(a(a(z2))))), p(b(a(a(b(a(z1))))), b(z0))))
K tuples:none
Defined Rule Symbols:
p
Defined Pair Symbols:
P
Compound Symbols:
c
(11) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
P(
p(
b(
a(
z0)),
a(
b(
a(
z1)))),
p(
b(
a(
a(
z2))),
b(
a(
y0)))) →
c(
P(
p(
b(
a(
y0)),
a(
b(
a(
a(
z2))))),
p(
b(
a(
a(
b(
a(
z1))))),
b(
z0)))) by
P(p(b(a(a(y3))), a(b(a(z1)))), p(b(a(a(z2))), b(a(z3)))) → c(P(p(b(a(z3)), a(b(a(a(z2))))), p(b(a(a(b(a(z1))))), b(a(y3)))))
(12) Obligation:
Complexity Dependency Tuples Problem
Rules:
p(p(b(a(z0)), z1), p(z2, z3)) → p(p(z3, a(z2)), p(b(a(z1)), b(z0)))
Tuples:
P(p(b(a(a(y3))), a(b(a(z1)))), p(b(a(a(z2))), b(a(z3)))) → c(P(p(b(a(z3)), a(b(a(a(z2))))), p(b(a(a(b(a(z1))))), b(a(y3)))))
S tuples:
P(p(b(a(a(y3))), a(b(a(z1)))), p(b(a(a(z2))), b(a(z3)))) → c(P(p(b(a(z3)), a(b(a(a(z2))))), p(b(a(a(b(a(z1))))), b(a(y3)))))
K tuples:none
Defined Rule Symbols:
p
Defined Pair Symbols:
P
Compound Symbols:
c
(13) CpxTrsMatchBoundsTAProof (EQUIVALENT transformation)
A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 0.
The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by:
final states : [1]
transitions:
b0(0) → 0
a0(0) → 0
p0(0, 0) → 1
(14) BOUNDS(O(1), O(n^1))